//
//  CYNStackArray.h
//  StackExample
//
//  Created by blank on 2017/11/28.
//  Copyright © 2017年 CYN. All rights reserved.
//

#import <Foundation/Foundation.h>

typedef void(^CYNStackBlock)(id obj);

@interface CYNStackArray : NSObject

/**
 入栈
 @param obj 指定入栈对象
 */
- (void)push:(id)obj;

/**
 出栈
 */
- (id)popObj;

/**
 是否为空
 */
- (BOOL)isEmpty;

/**
 栈的长度
 */
- (NSInteger)stackLength;

/**
 从栈底开始遍历
 @param block 回调遍历的结果
 */
-(void)enumerateObjectsFromBottom:(CYNStackBlock)block;

/**
 从顶部开始遍历
 */
-(void)enumerateObjectsFromTop:(CYNStackBlock)block;

/**
 所有元素出栈，一边出栈一边返回元素
 */
-(void)enumerateObjectsPopStack:(CYNStackBlock)block;

/**
 清空
 */
-(void)removeAllObjects;

/**
 返回栈顶元素
 */
-(id)topObj;
@end
